<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
    <title>TrenchBoot Intro | jouyouyun&#39;s blog</title>
    <meta name="viewport" content="width=device-width,minimum-scale=1">
    <meta name="description" content="TrenchBoot 是一个框架，用于让设备管理者选择适合其目标机器环境的安全引擎。目的是为了提升运行环境中固件及软件的安全性，通过测量启动环境来实现，如 DRTM 技术。
TrenchBoot 框架将启动流程分为三个阶段，分别是：


引导阶段(Bootstrap)
Bootstrap 阶段主要是对现已存在的引导技术，包括 UEFI、grub、shim 等，添加完整性功能。这是 TrenchBoot 的主要关注点，称之为 BIT(Boot Integrity Technology) 。


中间阶段(Intermediate)
Intermediate 阶段是 TrenchBoot 抽象出的，用来执行 TrenchBoot Loader ，以此实现系统启动的完整性。
TrenchBoot Loader 阶段将执行 TrenchBoot 安全引擎，通过 Dynamic Launch CPU 指令进入安全运行环境，然后对前一段阶段收集的 evidence 进行测试，并构建 DRTM(Dynamic Root of Trusted for Measurement) 。


运行阶段(Runtime)
Runtime 阶段根据测量结果和安全策略决定如何启动目标及赋予权限，目标包括管理程序、操作系统等。

">
    <meta name="generator" content="Hugo 0.105.0">
    
    
    
    
      <meta name="robots" content="noindex, nofollow">
    

    
<link rel="stylesheet" href="/ananke/css/main.min.css" >



    
    
    
      

    

    
    
    <meta property="og:title" content="TrenchBoot Intro" />
<meta property="og:description" content="TrenchBoot 是一个框架，用于让设备管理者选择适合其目标机器环境的安全引擎。目的是为了提升运行环境中固件及软件的安全性，通过测量启动环境来实现，如 DRTM 技术。
TrenchBoot 框架将启动流程分为三个阶段，分别是：


引导阶段(Bootstrap)
Bootstrap 阶段主要是对现已存在的引导技术，包括 UEFI、grub、shim 等，添加完整性功能。这是 TrenchBoot 的主要关注点，称之为 BIT(Boot Integrity Technology) 。


中间阶段(Intermediate)
Intermediate 阶段是 TrenchBoot 抽象出的，用来执行 TrenchBoot Loader ，以此实现系统启动的完整性。
TrenchBoot Loader 阶段将执行 TrenchBoot 安全引擎，通过 Dynamic Launch CPU 指令进入安全运行环境，然后对前一段阶段收集的 evidence 进行测试，并构建 DRTM(Dynamic Root of Trusted for Measurement) 。


运行阶段(Runtime)
Runtime 阶段根据测量结果和安全策略决定如何启动目标及赋予权限，目标包括管理程序、操作系统等。

" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://jouyouyun.github.io/post/trenchboot_intro/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2023-02-07T10:20:21+08:00" />
<meta property="article:modified_time" content="2023-02-14T11:11:59+08:00" />

<meta itemprop="name" content="TrenchBoot Intro">
<meta itemprop="description" content="TrenchBoot 是一个框架，用于让设备管理者选择适合其目标机器环境的安全引擎。目的是为了提升运行环境中固件及软件的安全性，通过测量启动环境来实现，如 DRTM 技术。
TrenchBoot 框架将启动流程分为三个阶段，分别是：


引导阶段(Bootstrap)
Bootstrap 阶段主要是对现已存在的引导技术，包括 UEFI、grub、shim 等，添加完整性功能。这是 TrenchBoot 的主要关注点，称之为 BIT(Boot Integrity Technology) 。


中间阶段(Intermediate)
Intermediate 阶段是 TrenchBoot 抽象出的，用来执行 TrenchBoot Loader ，以此实现系统启动的完整性。
TrenchBoot Loader 阶段将执行 TrenchBoot 安全引擎，通过 Dynamic Launch CPU 指令进入安全运行环境，然后对前一段阶段收集的 evidence 进行测试，并构建 DRTM(Dynamic Root of Trusted for Measurement) 。


运行阶段(Runtime)
Runtime 阶段根据测量结果和安全策略决定如何启动目标及赋予权限，目标包括管理程序、操作系统等。

"><meta itemprop="datePublished" content="2023-02-07T10:20:21+08:00" />
<meta itemprop="dateModified" content="2023-02-14T11:11:59+08:00" />
<meta itemprop="wordCount" content="178">
<meta itemprop="keywords" content="boot,measure,integrity,drtm,crtm,srtm," /><meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="TrenchBoot Intro"/>
<meta name="twitter:description" content="TrenchBoot 是一个框架，用于让设备管理者选择适合其目标机器环境的安全引擎。目的是为了提升运行环境中固件及软件的安全性，通过测量启动环境来实现，如 DRTM 技术。
TrenchBoot 框架将启动流程分为三个阶段，分别是：


引导阶段(Bootstrap)
Bootstrap 阶段主要是对现已存在的引导技术，包括 UEFI、grub、shim 等，添加完整性功能。这是 TrenchBoot 的主要关注点，称之为 BIT(Boot Integrity Technology) 。


中间阶段(Intermediate)
Intermediate 阶段是 TrenchBoot 抽象出的，用来执行 TrenchBoot Loader ，以此实现系统启动的完整性。
TrenchBoot Loader 阶段将执行 TrenchBoot 安全引擎，通过 Dynamic Launch CPU 指令进入安全运行环境，然后对前一段阶段收集的 evidence 进行测试，并构建 DRTM(Dynamic Root of Trusted for Measurement) 。


运行阶段(Runtime)
Runtime 阶段根据测量结果和安全策略决定如何启动目标及赋予权限，目标包括管理程序、操作系统等。

"/>

	
  </head>

  <body class="ma0 avenir bg-near-white">

    
   
  

  <header>
    <div class="bg-black">
      <nav class="pv3 ph3 ph4-ns" role="navigation">
  <div class="flex-l justify-between items-center center">
    <a href="/" class="f3 fw2 hover-white no-underline white-90 dib">
      
        jouyouyun&#39;s blog
      
    </a>
    <div class="flex-l items-center">
      

      
        <ul class="pl0 mr3">
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/post/" title="Archives 页">
              Archives
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/tags/" title="Tags 页">
              Tags
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/categories/" title="Categories 页">
              Categories
            </a>
          </li>
          
        </ul>
      
      
<div class="ananke-socials">
  
    <a href="https://github.com/jouyouyun" target="_blank" class="github ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="GitHub link" rel="noopener" aria-label="follow on GitHub——Opens in a new window">
      
        <span class="icon"><svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>
</span>
      
<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
</svg>
</span></a>
  
</div>

    </div>
  </div>
</nav>

    </div>
  </header>



    <main class="pb7" role="main">
      
  
  <article class="flex-l flex-wrap justify-between mw8 center ph3">
    <header class="mt4 w-100">
      <aside class="instapaper_ignoref b helvetica tracked">
          
        POSTS
      </aside>
      










  <div id="sharing" class="mt3 ananke-socials">
    
  </div>


      <h1 class="f1 athelas mt3 mb1">TrenchBoot Intro</h1>
      
      <p class="tracked">
         <strong>jouyouyun</strong>
      </p>
      
      
      
      <time class="f6 mv4 dib tracked" datetime="2023-02-07T10:20:21+08:00">二月 7, 2023</time>
      

      
      
    </header>
    <div class="nested-copy-line-height lh-copy serif f4 nested-links mid-gray pr4-l w-two-thirds-l"><p>TrenchBoot 是一个框架，用于让设备管理者选择适合其目标机器环境的安全引擎。目的是为了提升运行环境中固件及软件的安全性，通过测量启动环境来实现，如 DRTM 技术。</p>
<p>TrenchBoot 框架将启动流程分为三个阶段，分别是：</p>
<ul>
<li>
<p>引导阶段(Bootstrap)</p>
<p>Bootstrap 阶段主要是对现已存在的引导技术，包括 UEFI、grub、shim 等，添加完整性功能。这是 TrenchBoot 的主要关注点，称之为 BIT(Boot Integrity Technology) 。</p>
</li>
<li>
<p>中间阶段(Intermediate)</p>
<p>Intermediate 阶段是 TrenchBoot 抽象出的，用来执行 TrenchBoot Loader ，以此实现系统启动的完整性。</p>
<p>TrenchBoot Loader 阶段将执行 TrenchBoot 安全引擎，通过 Dynamic Launch CPU 指令进入安全运行环境，然后对前一段阶段收集的 evidence 进行测试，并构建 DRTM(Dynamic Root of Trusted for Measurement) 。</p>
</li>
<li>
<p>运行阶段(Runtime)</p>
<p>Runtime 阶段根据测量结果和安全策略决定如何启动目标及赋予权限，目标包括管理程序、操作系统等。</p>
</li>
</ul>
<h2 id="安全引擎">安全引擎</h2>
<p>TrenchBoot Security Engine 是 TrenchBoot Loader 的核心，安全引擎复杂处理 BIT 收集的 evidence ，以及根据需求搜集新的 evidence 。同时根据安全策略评估所有 evidence ，并执行策略中定义的强制策略。</p>
<h3 id="evidence">Evidence</h3>
<p>Evidence 是 TrenchBoot 中的核心概念，是系统启动阶段事件的记录，应是正确的且不可篡改、仿冒。</p>
<p>通常可用 hash 算法表示事件，典型的应用就是 TPM PCR 。</p>
<h3 id="bit">BIT</h3>
<p>BIT 是系统引导阶段硬件及软件的一项能力，通过此功能建立一定程度的完整性，即使用正确的逻辑来启动系统。若逻辑错误，则依赖此完整性进行解封的数据则不可用。</p>
<p>BIT 应能直接或间接的扩展启用及增强系统启动过程中使用完整性的范围。</p>
<p>同时 BIT 支持任意 evidence 格式，并能够将 evidence 格式转换为 TrenchBoot 维护的标准化的格式。这些标准化格式的数据将被安全引擎进行处理。</p>
<h3 id="security-processor">Security Processor</h3>
<p>TrenchBoot 的另一核心是 Security Processor，安全处理器。安全处理器是可由多个功能组件构成，由这些组件根据策略评估运行环境的状态。</p>
<p>安全处理器可以包括但不限于的功能有收集额外的 evidence、进行远程证明、解封加密密钥、解密文件/块设备/驱动器等。并根据安全策略控制系统的启动方式，如完全启动、维护模式、失败等。</p>
<p>目前可通过 Dynamic Launch CPU 指令实现安全处理器。</p>
<h3 id="launch-hand-off">Launch/Hand Off</h3>
<p>TrenchBoot 的目的是控制系统的启动，这部分是用于配置各种启动目标环境的方式。</p>
<h2 id="drtm">DRTM</h2>
<p>DRTM 技术是 TrenchBoot 的一种使用方式，其整体架构为：</p>
<figure><img src="/ox-hugo/trenchboot_drtm_arch.png" width="100%"/>
</figure>

<p>DRTM 是以 CRTM(Core Root of Trusted for Measurement)/SRTM(Static Root of Trusted for Measurement) 为锚点，以 Grub 作为 TrenchBoot Security Processor 。在 Grub 中调用 Dynamic Launch CPU 指令(详见： <a href="https://trenchboot.org/documentation/Late_Launch_Overview/">TrenchBoot Late launch</a>)进入安全环境，然后对运行环境进行评估，并基于评估结果和安全策略控制系统运行方式及权限。评估通过后将构建以 TPM 为信任根的 DRTM 环境，为系统运行提供信任基础。</p>
<p>目前 TrenchBoot 项目在计划直接从 UEFI Stub 直接启动 kernel ，并支持更多的 CPU 架构。</p>
<h2 id="动态度量">动态度量</h2>
<p>可信计算中的动态度量关注范围比 DRTM 更广，除了引导阶段外，还关注的是系统运行后的环境安全，功能主要包括动态收取、执行策略以及上报策略执行结果和当前运行状态。</p>
<p>可信度量的技术方案与 DRTM 不同，其在可信芯片、可信主板、可信固件之上构建一个独立的操作系统，实现可信软件基，用以评估系统的启动和运行。</p>
<h2 id="参考文档">参考文档</h2>
<ul>
<li><a href="https://trenchboot.org/documentation/">TrenchBoot Official Document</a></li>
<li><a href="https://3mdeb.com/wp-content/uploads/2021/06/TrenchBoot.pdf">TrenchBoot Project Description</a></li>
<li><a href="https://trenchboot.org/slides/How_TrenchBoot_is_Enabling_Measured_Launch_for_Open-Source_Platform_Security.pdf">How TrenchBoot is enabling Measured Launch for Open-Source Platform Security</a></li>
<li><a href="https://learn.microsoft.com/zh-cn/windows/security/threat-protection/windows-defender-system-guard/how-hardware-based-root-of-trust-helps-protect-windows">Windows 基于硬件的信任根</a></li>
</ul><ul class="pa0">
  
   <li class="list di">
     <a href="/tags/boot" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">boot</a>
   </li>
  
   <li class="list di">
     <a href="/tags/measure" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">measure</a>
   </li>
  
   <li class="list di">
     <a href="/tags/integrity" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">integrity</a>
   </li>
  
   <li class="list di">
     <a href="/tags/drtm" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">drtm</a>
   </li>
  
   <li class="list di">
     <a href="/tags/crtm" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">crtm</a>
   </li>
  
   <li class="list di">
     <a href="/tags/srtm" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">srtm</a>
   </li>
  
</ul>
<div class="mt6 instapaper_ignoref">
      
      
      </div>
    </div>

    <aside class="w-30-l mt6-l">




</aside>

  </article>

    </main>
    <footer class="bg-black bottom-0 w-100 pa3" role="contentinfo">
  <div class="flex justify-between">
  <a class="f4 fw4 hover-white no-underline white-70 dn dib-ns pv2 ph3" href="https://jouyouyun.github.io" >
    &copy;  jouyouyun 2023 
  </a>
    <div>
<div class="ananke-socials">
  
    <a href="https://github.com/jouyouyun" target="_blank" class="github ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="GitHub link" rel="noopener" aria-label="follow on GitHub——Opens in a new window">
      
        <span class="icon"><svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>
</span>
      
<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
</svg>
</span></a>
  
</div>
</div>
  </div>
</footer>

  </body>
</html>
